org.json.JSONObject cannot be converted to JSONArray hatası
Herkese merhaba
Android uygulamamda Mysqlden veri çekip kullanmam gerekiyordu.Volley kütüphanesi kullanarak Json parse işlemi yapıyorum fakat org.json.JSONObject cannot be converted to JSONArray hatası alıyorum.
Hatayı kodumdaki: [code]JSONObject person =etkinlikler.getJSONObject(i);[/code] satırında alıyorum.Php çıktımda sorun yok gibi gözüküyor.Veritabanı bağlantımda da sorun yok.Birkaç gündür sırf bunu çözmeye çalışıyorum stackoverdaki cevaplarla çözemedim.Yardım ederseniz çok sevinirim.
Not:Emülator olarak Genymotion kullandığım için ip adresi 10.0.3.2 yani orada bir hata yok
Php çıktım:
{
"etkinlikler": [
{
"_id": "1",
"ad": "toplanti1",
"tarih": "tarih1",
"yer": "yer1",
"baslangicsaati": "13:00",
"bitissaati": "18:00"
},
{
"_id": "2",
"ad": "toplanti2",
"tarih": "tarih2",
"yer": "yer2",
"baslangicsaati": "14:00",
"bitissaati": "17:00"
}
]
}
Java kodum:
[code]package com.monat.bitirme.anamenu;
public class EtkinlikTakvimiActivity extends Activity {
ListView lv;
private String jsonResponse;
private ProgressDialog pDialog;
TextView tv;
// Creating JSON Parser object
JSONParser jParser = new JSONParser();
ArrayList<Etkinlik> etkinlikList;
// url to get all etkinlikler list
private static String url_tum_etkinlikler = "http://10.0.3.2/Bitirme/get_tum_etkinlikler.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_ETKINLIKLER = "etkinlikler";
private static final String TAG_ID = "id";
private static final String TAG_AD = "ad";
private static final String TAG_YER = "yer";
private static final String TAG_TARIH = "tarih";
private static final String TAG_BASLANGIC_SAATI = "baslangicsaati";
private static final String TAG_BITIS_SAATI = "bitissaati";
// etkinlikler JSONArray
JSONArray etkinlikler = null;
private RequestQueue mRequestQueue;
String TAG;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_etkinlik_takvimi);
tv=(TextView)findViewById(R.id.textView14);
etkinlikList = new ArrayList<Etkinlik>();
lv = (ListView) findViewById(R.id.lvEtkinlikTakvimi);
pDialog = new ProgressDialog(this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
makeJsonArrayRequest();
}
private void makeJsonArrayRequest() {
showpDialog();
JsonArrayRequest req = new JsonArrayRequest(url_tum_etkinlikler,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG_ETKINLIKLER, response.toString());
try {
// Parsing json array response
// loop through each json object
etkinlikler=response;
jsonResponse = "";
for (int i = 0; i < etkinlikler.length(); i++) {
JSONObject person =etkinlikler.getJSONObject(i);
//getJSONObject(i);
String _id = person.getString("_id");
String ad = person.getString("ad");
String yer = person.getString("yer");
String tarih = person.getString("tarih");
String baslangicsaati = person.getString("baslangicsaati");
String bitissaati = person.getString("bitissaati");
jsonResponse += "Name: " + _id + "\n";
jsonResponse += "Email: " + ad + "\n";
jsonResponse += "Home: " + yer + "\n";
jsonResponse += "Mobile: " + tarih + "\n";
jsonResponse += "Mobile: " + baslangicsaati + "\n";
jsonResponse += "Mobile: " + bitissaati + "\n";
}
tv.setText(jsonResponse);
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
" Volley Error + " + e.getMessage(),
Toast.LENGTH_LONG).show();
Log.e("hata",e.getMessage()); }
hidepDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG_ETKINLIKLER, "Error: " + error.getMessage());
Toast.makeText(getApplicationContext(),
"Volley Error + "+error.getMessage(), Toast.LENGTH_SHORT).show();
//Log.e("hata",error.getMessage());
hidepDialog();
}
});
// Adding request to request queue
AppController.getInstance().addToRequestQueue(req);
}
private void showpDialog() {
if (!pDialog.isShowing())
pDialog.show();
}
private void hidepDialog() {
if (pDialog.isShowing())
pDialog.dismiss();
}
}
[/code]
Php Kodum:
[code]<?php
// array for JSON response
$response = array();
try {
$db = new PDO("mysql:host=localhost;dbname=bitirme", "root", "");
} catch ( PDOException $e ){
print $e->getMessage();
}
$result = $db->query("SELECT * FROM etkinlikler", PDO::FETCH_ASSOC);
if ( $result->rowCount() ){
// etkinlikler node
$response["etkinlikler"] = array();
foreach( $result as $row ){
// looping through all results
$etkinlik = array();
$etkinlik["_id"] = $row["_id"];
$etkinlik["ad"] = $row["ad"];
$etkinlik["tarih"] = $row["tarih"];
$etkinlik["yer"] = $row["yer"];
$etkinlik["baslangicsaati"] = $row["baslangicsaati"];
$etkinlik["bitissaati"] = $row["bitissaati"];
// push single etkinlik into final response array
array_push($response["etkinlikler"], $etkinlik);
}
// echoing JSON response
echo json_encode($response);
}
?>
[/code]